import random
dir(random)  # 看下这个模块有什么函数
random.random()  # 生产一次0-1随机数
random.uniform(a,b)  # 生产一次a到b区间随机浮点数
random.randint(a,b)  # 同上int
random.randrange(a,b,2)  # 生产一次a到b数中step是2组成list随机选择
random.choice(["JGood", "is", "a", "handsome", "boy"])  # 从list中随机选择字符串

random.sample(range(100),10)  # 从1-100中随机选择10个数字生成列表
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
slice = random.sample(list, 5)  # 从list中随机获取5个元素，作为一个片断返回  

from datetime import date,datetime,time,timedelta
today = date.today()  # 返回时间类别 年、月、日
now = datetime.now()  # 返回时间类别 年、月、日、时、分、秒
cal_time = timedelta(days = -3)  # 需要减少三天想看有其他参数请用__doc__或者help() weeks、hours
cal_today = today +cal_time
cal_now = now +cal_time

tm =  time(23,20,20)  # 生成时间
dt = datetime(2016,6,6,23,29)  # 生成日期时间
ts = dt.timestamp()  # ts生成全球计算机统一时间戳
datetime.fromtimestamp(ts)  # 时间戳转换时间

today.strftime("%m/%d/%Y")
datetime.strftime(today,"%m%Y")  # 应用datetime.strftime函数给 today变量 格式化 
#线程停止、当前时间显示
# time模块
#当前电脑时间。以1970年后的时间戳
time.time()#固定运行当前时间点，可以用localtime(time.time())转换格式 
#1553129378.5888112 属性：float
t1=time.localtime()#t1对象是当地的时间 属性：time.struct_time
t1.tm_year #显示年 2018 属性：int
#其他属性tm_year、tm_mon、tm_mday、tm_hour、tm_min、tm_sec
#通用格式化时间
t1=time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())
#'2019-03-21 08-43-14' 属性：str
#最简单格式化时间：
localtime = time.asctime( time.localtime(time.time()) )
#'Thu Mar 21 08:55:07 2019' 属性：str
time.sleep(2)#线程运行停止2秒

#sys模块传参
import sys

#glob模块经典
f = glob.glob(r"C:\*.csv")  # 返回一个列表 通配符特征提取 和os.path.join()联合应用

#os模块
import os
#操作系统路径目录、文件操作

getcwd()#返回当前工作目录
chdir(path)#改变工作目录
listdir(path='.')#列举指定目录中的文件名('.'表示当前目录，'..'表示)上一级目录
mkdir(path) #创建单层目录，如该目录已存在抛出异常
makedirs(path)#递归创建多层目录，如该目录已存在，抛出异常。注意
remove(path)#删除文件
rmdir(path) #删除单层目录，如该目录非空则抛出异常。
removedirs(path)#递归删除目录，从子目录到父目录逐层尝试删除，尝试删除，遇到目录非空则抛出异常。
rename(old，new) #将文件old重命名为new
system(command) #运行系统的shell命定
walk（top）#遍历top路径下面所有子目录，返回一个三元组（路径，[包含目录]，[包含文件]）具体看代码
os.name#指代当前操作系统
#os.path
basename（path）#去掉目录机，单独返回文件名。
dirname（path）#去掉文件名，单独返回目录路径。
join（path1,path2,....）#将path1 path2 各部分组合成一个路径名
spilt（path）#分割文件名与路径，返回（f_path，f_name）元组。如果完全使用目录，它也会将最后一个目录作为文件名分离，且不会判断文件或者目录是否存在。
splitext（path）#文件名与扩展名分离。返回（f_name，f_extension）元组
getsize（file）#返回指定文件的尺寸，单位是字节
getatime（file）#返回指定文件最近的访问时间（浮点型秒杀数，可用time模块的gmtime（）或者localtime（）函数转换）
getctime（file）#返回指定文件最近的创建时间（浮点型秒杀数，可用time模块的gmtime（）或者localtime（）函数转换）
getmtime（file）#返回指定文件最近的修改时间（浮点型秒杀数，可用time模块的gmtime（）或者localtime（）函数转换）
#以下返回值 Ture or False
exists（path）#判断指定路径（目录或文件）是否存在
isabs（path）#判断指定路径是否为绝对路径
isdir（path）#判断指定路径是否存在且是一个目录
isfile（path）#判断指定路径是否存在且是一个文件
islink（path）#判断指定路径是否存在且是一个符号链接
ismount（path）#判断指定路径是否存在且是一个挂载点

#pickle模块储存
import pickle

def pickle_save(data,file_name):
    '''1、data可以是字典、列表、字符串
       2、file_name可以是 file.pkl 或者 'D:\数据\文件名.pkl'
       3、如果是file.pkl 保存 在当前运行模块文件下面'''
    pickle_file=open(file_name,'wb')
    pickle.dump(data,pickle_file)
    pickle_file.close()
def pickle_load(file_name):
    '''1、file_name可以是 file.pkl 或者 'D:\数据\文件名.pkl'
       2、如果是file.pkl确保在当前文件目录下面有
       3、返回值 是读取的数据'''
    try:
        pickle_file=open(file_name,'rb')
        data=pickle.load(pickle_file)
        return data
    except OSError as reason:
        print('该路径没有此文件请重新核实'+str(reason))

#shelve模块
#保存为二进制存储在硬盘内数据，shelf值有keys和balues
shelfFile=shelve.open('mydata')
dog=['ylc','zqq','yhc']
shelfFile['cats']=dog
shelfFile.close()
#保存数据

shelfFile=shelve.open('mydata')
shelfFile['cats']
#>>>['ylc', 'zqq', 'yhc']
shelfFile.close()
#数据读取
samefile（path1,path2）#判定path1与path2两个路径是否指向同一个文件


